#ifndef ARCHIVOAUXILIAR_H_
#define ARCHIVOAUXILIAR_H_

#pragma once
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include "Archivo.h"
#include "ArchivoComprimido.h"
#include "ArchivoTerminos.h"
#include "RegistroAuxiliar.h"

#define FRONT_CODING 10

struct RegistroA{   
    unsigned int o_Docs;
    unsigned short numDocs;
};

class ArchivoAuxiliar: public Archivo {
private:
    const char* filename;    
    uint32_t o_PosAnterior;

    ArchivoTerminos *term;

    ArchivoComprimido *docs;
    ArchivoComprimido *pos;
    
    RegistroA regSig;
    unsigned int length;

public:    
    ArchivoAuxiliar(const char* filename);    
    int read(RegistroAuxiliar* r);
    void read(RegistroAuxiliar* r, unsigned int pos);
    void write(RegistroAuxiliar& r);
    void rename(const char* filename);
    vector<string>* getTerminos();
    void update();
    void destroy();
    ~ArchivoAuxiliar();
};

#endif /* ARCHIVOAUXILIAR_H_ */
